/****************************************************************************

 Copyright (C) 2009 Jean Pierre Charalambos. All rights reserved.

 Dialog contributed by: Juan Carlos León (http://code.google.com/p/maku/).

 This file is part of maku version 0.2.

 http://code.google.com/p/maku/
 email: jpcharalambosh@unal.edu.co

 This file may be used under the terms of the GNU General Public License
 versions 2.0 or 3.0 as published by the Free Software Foundation and
 appearing in the COPYING file included in the packaging of this file.

 This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

*****************************************************************************/

#ifndef SHADERDIALOG_H
#define SHADERDIALOG_H

#include <QDialog>
#include <QVector>

#include "ui_shader.h"
#include "uniform.h"

#include "scenebase.h"

class ShaderDialog : public QDialog, private Ui::ShaderDialog {
        Q_OBJECT

    public:
        ShaderDialog ( SceneBase* , QWidget *parent = 0 );


    private slots:
        void applyXvalueChange ( double );
        void applyYvalueChange ( double );
        void applyZvalueChange ( double );
        void applyWvalueChange ( double );

        void changeXmaximum ( int );
        void changeXminimum ( int );
        void changeYmaximum ( int );
        void changeYminimum ( int );
        void changeZmaximum ( int );
        void changeZminimum ( int );
        void changeWmaximum ( int );
        void changeWminimum ( int );

        //double functionality slots
        void changeDoubleComboXvalue ( int );
        void changeDoubleXSliderValue ( double );
        void changeDoubleXmaximumValue ( double );
        void changeDoubleXminimumValue ( double );

        void changeDoubleComboYvalue ( int );
        void changeDoubleYSliderValue ( double );
        void changeDoubleYmaximumValue ( double );
        void changeDoubleYminimumValue ( double );

        void changeDoubleComboZvalue ( int );
        void changeDoubleZSliderValue ( double );
        void changeDoubleZmaximumValue ( double );
        void changeDoubleZminimumValue ( double );

        void changeDoubleComboWvalue ( int );
        void changeDoubleWSliderValue ( double );
        void changeDoubleWmaximumValue ( double );
        void changeDoubleWminimumValue ( double );

        //combo box functionality
        void selectShaderUniform ( int );
    private:
        QVector<Uniform> uniforms;
        SceneBase* parentScene;
        Uniform currentUniform;

};

#endif // SHADERDIALOG_H
